/**tabbar管理器
 * @author zhangml
 */
Ext.namespace("Milan.tabbarManager");
Milan.tabbarManager.MAIN_TAB_SIZE = 0;
Milan.tabbarManager._HEAD_FIX = "index_tab_";
Milan.tabbarManager.menuCache = {};
Milan.tabbarManager.tabbars={};
Milan.tabbarManager.mainTabbarId="middleFrame";
Milan.tabbarManager.unCloseTabIds = ",mainTabPanel,";
Milan.tabbarManager.firstTabTitle = "firstTab";
Milan.tabbarManager.getMainTabContainer=function()
{
	return Milan.tabbarManager.getTabContainer(Milan.tabbarManager.mainTabbarId);
};
Milan.tabbarManager.getTabContainer=function(key){
	key=key||Milan.tabbarManager.mainTabbarId;
	return Milan.tabbarManager.tabbars[key];
};
Milan.tabbarManager.getAllTabs=function(){
	var arr = [];
	for(var k in Milan.tabbarManager.tabbars){
		arr.push(Object.values(Milan.tabbarManager.tabbars[k].getTabs()).compact());
	}
	return arr;
};
/**
 * 创建tabbar主体
 */
Milan.tabbarManager.buildMainTabber = function()
{
	Milan.tabbarManager.tabbars[Milan.tabbarManager.mainTabbarId] = new dhtmlXTabBar(Milan.tabbarManager.mainTabbarId);
	Milan.tabbarManager.getMainTabContainer().setSkin('dhx_skyblue');
	Milan.tabbarManager.getMainTabContainer().enableForceHiding(true);
	Milan.tabbarManager.getMainTabContainer().setImagePath(Milan.skinType + "images/dhtmlx/");
	Milan.tabbarManager.getMainTabContainer().enableAutoReSize(true);
	var home =""; 
	/*
	if(jQuery("#menuContain").length>0){
		home += "<div id=\"main_menu\" title=\"点击显示更多标签\">更多</div>"; 
	}
	if(Milan.currentUserId>0){
		home += "<div id=\"main_create_tab\" title=\"点击显示新建菜单\">新建</div><div id=\"main_arrdown\"></div>";
	}
	*/
	Milan.tabbarManager.getMainTabContainer().setHome(home);
	Milan.tabbarManager.getMainTabContainer().resetTabTitleWidth();
	Milan.tabbarManager.createTabbarContextMenu();
	Milan.tabbarManager.initMainTabSize();
};
/**
 * 初始化标签最大数
 */
Milan.tabbarManager.initMainTabSize=function(){
	var width =jQuery("body").width();
	if(jQuery("#main_create_tab")){
		width -= jQuery("#main_create_tab").width();
	}
	if(jQuery("#main_arrdown")){
		width -= jQuery("#main_arrdown").width();
	}
	if(jQuery("#main_menu")){
		width -= 150;
	}
	Milan.tabbarManager.MAIN_TAB_SIZE = Math.floor(width/100) - 1;
	Milan.tabbarManager.MAIN_TAB_SIZE = (Milan.tabbarManager.MAIN_TAB_SIZE < 10)? 10:Milan.tabbarManager.MAIN_TAB_SIZE;
};
Milan.tabbarManager.createTabbarContextMenu=function(){
	if(Milan.currentUserId <= 0)return;
	jQuery(document.body).append("<div id='tabbarContextMenu' class='pop-menu'><div class='menu-box'><ul class='menu-list' style='width:100px;'><li>关闭</li><li>关闭其他</li><li>关闭所有</li><li>设为默认页</li></ul></div></div>");
	var closeTabbarContextMenu =null;
	var closeContextMenu =function(){
		jQuery("#tabbarContextMenu").hide();
		Event.stopObserving(document,"mousedown",closeTabbarContextMenu);
	};
	jQuery("#tabbarContextMenu").find("li").hover(function () {jQuery(this).addClass("lihover");},function () {jQuery(this).removeClass("lihover");}).each(function(i,ele){
		if(i==0)jQuery(ele).bind("click",function(){
			Milan.tabbarManager.removeCurrentTab();
			closeContextMenu();
		});
		if(i==1)jQuery(ele).bind("click",function(){
			var currentTab = Milan.tabbarManager.getActiveTab();
			var tabs = Object.values(Milan.tabbarManager.getMainTabContainer().getTabs()).compact();
			for(var j=tabs.length - 1;j>=0;j--){
				if(tabs[j] && tabs[j].getAttribute && tabs[j].getAttribute("tab_id")!=currentTab&&Milan.tabbarManager.unCloseTabIds.indexOf(","+tabs[j].getAttribute("tab_id")+",")==-1){
					Milan.tabbarManager.removeTab(tabs[j].getAttribute("tab_id"));
				}
			}
			closeContextMenu();
		});
		if(i==2)jQuery(ele).bind("click",function(){
			var tabs = Object.values(Milan.tabbarManager.getMainTabContainer().getTabs()).compact();
			for(var j=tabs.length - 1;j>=0;j--){
				if(tabs[j] && tabs[j].getAttribute && Milan.tabbarManager.unCloseTabIds.indexOf(","+tabs[j].getAttribute("tab_id")+",")==-1){
					Milan.tabbarManager.removeTab(tabs[j].getAttribute("tab_id"));
				}
			}
			closeContextMenu();
		});
		if(i==3)jQuery(ele).bind("click",function(){
			var activeTabId = Milan.tabbarManager.getActiveTab();
			var subTabId = Milan.tabbarManager.getActiveTab(activeTabId);
			if(activeTabId.indexOf(Milan.tabbarManager._HEAD_FIX) > -1){
				activeTabId = activeTabId.substring(activeTabId.indexOf(Milan.tabbarManager._HEAD_FIX)+Milan.tabbarManager._HEAD_FIX.length);
			}
			if(subTabId.indexOf(Milan.tabbarManager._HEAD_FIX) > -1){
				subTabId = subTabId.substring(subTabId.indexOf(Milan.tabbarManager._HEAD_FIX)+Milan.tabbarManager._HEAD_FIX.length);
			}
			Milan.commonutils.setCookie(Milan.tabbarManager.firstTabTitle+Milan.currentUserId,activeTabId+" ` "+subTabId,365);
			closeContextMenu();
			var notifyMessage = (activeTabId == "mainTabPanel")?"首页":activeTabId+"-"+subTabId;
			Milan.commonutils.createDelayNotifyModel('提示信息',notifyMessage+" 已被设置成默认页");
		});
	});
	jQuery(".dhx_tabbar_row").bind("contextmenu",function(e){
		e = e||event;
		var tabId = "";
		for(var ele = e.srcElement||e.target; ele.tagName.toLowerCase()!="body"; ele = ele.parentNode){
			if(jQuery(ele).hasClass("dhx_tab_element")){
				tabId = jQuery(ele).attr("tab_id");
			}
		}
		if(!tabId){
			return;
		}
		Milan.tabbarManager.activateTab(tabId);
		if(Milan.tabbarManager.unCloseTabIds.indexOf(","+tabId+",")>-1){
			jQuery("#tabbarContextMenu").find("li").each(function(i,ele1){
				if(i==0||i==2)ele1.style.display="none";
			});
		}else{
			jQuery("#tabbarContextMenu").find("li").each(function(i,ele1){
				ele1.style.display=""
			});
		}
		jQuery("#tabbarContextMenu").css({"top":Milan.commonutils.mouseY+"px","left":Milan.commonutils.mouseX+"px","right":"auto"});
		if((Milan.commonutils.mouseX+parseInt(jQuery("#tabbarContextMenu").width()))>parseInt(jQuery(document.body).width())){
			jQuery("#tabbarContextMenu").css({"left":"auto","right":"0px"})
		}
		jQuery("#tabbarContextMenu").show()
		closeTabbarContextMenu = function(evt){
			evt = window.event||evt;
			var element = evt.srcElement||evt.target;
			while(element && element.tagName && element.tagName.toLowerCase()!="body"){
				if(element.id=="tabbarContextMenu")
					return;
				element = element.parentNode;
			}
			closeContextMenu();
		};
		Event.observe(document,"mousedown",closeTabbarContextMenu);
		Milan.tabbarManager.fireTabClickEvent();
        return false;
    });
};
Milan.tabbarManager.createMainMenu=function(){
	Milan.tabbarManager.initMainMenuCache();
	
	/*添加更多菜单*/
	if(jQuery("#menuContain").length>0){
		jQuery('#main_menu').menu({ content: jQuery("#menuContain").html(), flyOut: true,offsetY:34,callerOnState:"main_menu_hover",width:125,subWidth:80,width:120},"click");
		jQuery("#menuContain").remove();
	}
	
	/*快捷新建功能添加单击效果*/
	var addMenuLength = jQuery("#addMenuContain").find("a").length;
	if(Milan.currentUserId>0 && addMenuLength > 0){
		jQuery('#main_arrdown').menu({ content: jQuery("#addMenuContain").html(), flyOut: true,offsetY:34 ,callerOnState:"main_create_tab_hover",width:69},"click");
		jQuery('#main_arrdown').click();
		jQuery(document).click();
		if(jQuery("ul[aria-labelledby='main_arrdown']").find("a:first").length>0){
			jQuery("#main_create_tab").click(function(){jQuery("ul[aria-labelledby='main_arrdown']").find("a:first").click();});
		}
	}
	jQuery("#addMenuContain").remove();
	//给头部三个按钮加上鼠标效果
	jQuery('#main_menu,#main_create_tab,#main_arrdown').each(function(i){
			if(i > 0 && addMenuLength > 0){
				jQuery(this).hover(function(){
					jQuery(this).addClass("main_create_hover");
				},function(){
					jQuery(this).removeClass("main_create_hover");
				});
			}
		}
	)
	
};
Milan.tabbarManager.setShortcut=function(){
	jQuery(".setBar").hover(function () {jQuery(this).addClass("setBar_bg");},function () {jQuery(this).removeClass("setBar_bg");});
}
/**
 * 将菜单的js缓存到Milan.tabbarManager.menuCache
 */
Milan.tabbarManager.initMainMenuCache=function(){
	var click=null,attr,value;
	jQuery("#menuContain").find("a").each(function(i,n){
		click  = n.getAttribute("onclick");
		if(click){
			click = click.toString();
			click = click.substring(click.indexOf("Milan.tabbarManager.openMultiSubTabs(")+"Milan.tabbarManager.openMultiSubTabs(".length);
			click = click.substring(0,click.lastIndexOf(")"));
			attr = click.split(",",1);attr = attr[0].replace(/'/g,"");
			value = click.substring(click.indexOf("new Array"),click.lastIndexOf(")")+1);
			Milan.tabbarManager.menuCache[attr]=eval(value);
		}
	});
	if(Milan.fixedMenu){
		for(var menuTitle in Milan.fixedMenu){
			if(Milan.fixedMenu.hasOwnProperty(menuTitle) && menuTitle.indexOf("_activesub")==-1){
				Milan.tabbarManager.menuCache[menuTitle]=Milan.fixedMenu[menuTitle];
			}
		}
	}
}

Milan.tabbarManager.getSubMenusFromMenuCache = function(menuName)
{
	return Milan.tabbarManager.menuCache[menuName];
}
/**
 * 获取当前激活状态的tabar
 * 如果有给parentTabId则获得给定的tab下的激活的子tab.
 */
Milan.tabbarManager.getActiveTab = function(parentTabId)
{
	parentTabId = parentTabId||Milan.tabbarManager.mainTabbarId;
	var parentTab = Milan.tabbarManager.getTabContainer(parentTabId);
	if(!parentTab)parentTab = Milan.tabbarManager.getTabContainer(Milan.tabbarManager.generateTabId(parentTabId));
	if(!parentTab)parentTab = Milan.tabbarManager.getMainTabContainer();
	if(!parentTab) return ;
	return parentTab.getActiveTab();
};
/**
 * 获取当前激活状态的二级tabar
 */
Milan.tabbarManager.getSubActiveTab = function(){
	var pId = Milan.tabbarManager.getActiveTab();
	if(pId=="mainTabPanel"){
		return pId;
	}
	return Milan.tabbarManager.getActiveTab(pId);
};
/**
 * 激活给定id的tabbar
 */
Milan.tabbarManager.activateTab = function(tabId,parentTabId) 
{
	parentTabId = parentTabId||Milan.tabbarManager.mainTabbarId;
	if (Milan.tabbarManager.getTabContainer(parentTabId))
		if (!Milan.tabbarManager.getTabContainer(parentTabId).latestTabId || Milan.tabbarManager.getTabContainer(parentTabId).latestTabId!=Milan.tabbarManager.getActiveTab(parentTabId))	
			Milan.tabbarManager.tabbars[parentTabId].latestTabId = Milan.tabbarManager.getActiveTab(parentTabId);
	Milan.tabbarManager.getMainTabContainer().setTabActive(parentTabId);
	if (tabId) Milan.tabbarManager.getTabContainer(parentTabId).setTabActive(tabId);
	jQuery("div[ida='dhxMainCont']").css("width","100%");
};

/**
 * 用title来激活tabbar。
 * 如果给了tabTitle和subTitle,则会先找到tabTitle,再尝试激活其下的subTitle
 * 如果没有给subTitle，则找到tabTitle后就激活自己
 */
Milan.tabbarManager.activateTabByTitle = function(tabTitle,subTitle)
{
	var tabId = Milan.tabbarManager.getTabIdByTitle(tabTitle);
	if (!tabId) return false;
	var subId = Milan.tabbarManager.getTabIdByTitle(subTitle,tabId);
	
	if (subId)	//如果有二级tabber,在激活前，先判断下是否已经加载了，没有加载就帮
	{
		var tab = Milan.tabbarManager.getTabContainer(tabId).getTab(subId);
		if (tab.onclick)
			tab.onclick();
	}else
		return false;
	Milan.tabbarManager.activateTab(subId,tabId);
	return true;
};

Milan.tabbarManager.activateTabsWhenNotExistByTitle = function(tabTitle,subTitle)
{
	if (!Milan.tabbarManager.activateTabByTitle(tabTitle,subTitle))
	{
		Milan.tabbarManager.openMultiSubTabs(tabTitle,null,subTitle);
	}
}

/**
 * 在tabId给定的tab里查找符合tabTitle的tab,并返回其tabId
 * 如果不给tabId,则从全部tabbar中查找
 */
Milan.tabbarManager.getTabIdByTitle = function(tabTitle,tabId)
{
	if (tabId)
	{
		var tab = Milan.tabbarManager.getTabContainer(tabId);
		return tab?_s(tab.getTabs(),tabTitle):null;		
	}
	else
		for(var k in Milan.tabbarManager.tabbars)
		{
			var tabs = Milan.tabbarManager.tabbars[k].getTabs();
			var tId = _s(tabs,tabTitle);
			if (tId) return tId;
		}
		
	function _s(tabs,title)
	{
			for (var i=0;i<tabs.length;i++)
			{
				if (tabs[i].getAttribute("tab_title")==title)
					return tabs[i].getAttribute("tab_id");
			}
			return null;
	}	
};
//通过标签名称获取标签对象
Milan.tabbarManager.getTabByTitle = function(tabTitle,tabId){
	var tab = null;
	if (tabId){
		tab = Milan.tabbarManager.getTabContainer(tabId);
		return tab.getTab(Milan.tabbarManager.generateTabId(tabTitle));
	}else{
		var result = null;
		tabTitle = Milan.tabbarManager.generateTabId(tabTitle);
		for(var k in Milan.tabbarManager.tabbars){
			tab = Milan.tabbarManager.getTabContainer(k).getTab(tabTitle);
			if(tab){
				result = tab;
				if(k !=Milan.tabbarManager.mainTabbarId){
					return tab;
				}
			}
		}
		return result;
	}
	return tab;
}
/**
 * 根据id判断tabbar是否存在
 * parentTabId可以没有，如果没有。。则是遍历所有
 */
Milan.tabbarManager.existTab=function(tabId,parentTabId)
{
	parentTabId = parentTabId||Milan.tabbarManager.mainTabbarId;
	if (parentTabId)
	{
		return (Milan.tabbarManager.getTabContainer(parentTabId)&&Milan.tabbarManager.getTabContainer(parentTabId).getTab(tabId));
	}
	else
	{
		var tabs = Milan.tabbarManager.getAllTabs();
		for (var i=0;i<tabs.length;i++)
		{
			if (tabs[i].id==tabId)
				return tabs[i];
		}
	}
};

/**
 * 根据给定的内容新建tabbar
 * 如果parentTabId没有给，则默认是主Tabber
 */
Milan.tabbarManager.openTab=function(tabId,tabTitle,url,parentTabId,config){
	Milan.tabbarManager.addTab(tabId,tabTitle,parentTabId);
	Milan.ajaxutility.updateContentUseAjax("POST",url,tabId,config);
	Milan.tabbarManager.activateTab(tabId,parentTabId);
};
/**
 * 新建tabbar
 */
Milan.tabbarManager.addTab=function(tabId,tabTitle,parentTabId,size,iconClass)
{
	parentTabId = parentTabId||Milan.tabbarManager.mainTabbarId;
	if(parentTabId==Milan.tabbarManager.mainTabbarId){
		var tabs = Object.values(Milan.tabbarManager.getMainTabContainer().getTabs()).compact(), tab_id = "", 
			activeTab = Milan.tabbarManager.getActiveTab(parentTabId);
		if(Milan.tabbarManager.MAIN_TAB_SIZE&&Milan.tabbarManager.getMainTabContainer().getNumberOfTabs()==Milan.tabbarManager.MAIN_TAB_SIZE){
			for(var i = tabs.length - 1; i >= 0; i--){
				if(!tabs[i].getAttribute)continue;
				tab_id = tabs[i].getAttribute("tab_id");
				if(activeTab != tab_id && !Milan.fixedMenu[tab_id.substring(Milan.tabbarManager._HEAD_FIX.length)]){
					Milan.tabbarManager.removeTab(tab_id,1,parentTabId);
					break;
				}
			}
		}
	}
	var len = tabTitle.length*18;
	size = size||(len<98?98:len);
	if (iconClass)
		Milan.tabbarManager.getTabContainer(parentTabId).addIconTab(tabId,tabTitle,iconClass,size);
	else
		Milan.tabbarManager.getTabContainer(parentTabId).addTab(tabId,tabTitle,size);
};
/*
 * 打开一个空标签页
 */
Milan.tabbarManager.openBlankTab=function(tabTitle,parentTabId){
	var tabId = Milan.tabbarManager.generateTabId(tabTitle);
	parentTabId = parentTabId||Milan.tabbarManager.mainTabbarId;
	if (!Milan.tabbarManager.existTab(tabId,parentTabId)){
		Milan.tabbarManager.addTab(tabId, tabTitle,parentTabId);
	}
	Milan.tabbarManager.activateTab(tabId,parentTabId);
};
/**
 * 关闭并切换tabbar
 */
Milan.tabbarManager.removeTab = function(tabId,switchMode,parentTabId)
{
	parentTabId = parentTabId||Milan.tabbarManager.mainTabbarId;
	switchMode=switchMode||1;
	if (!Milan.tabbarManager.existTab(tabId,parentTabId))return;
	switch(switchMode){
		case 0://=0时，只关闭，不打开
			Milan.tabbarManager.getTabContainer(parentTabId).removeTab(tabId,false);
			break;
		case 1://没有传入mode或=1时，将关闭tab后打开一个最接近的
			Milan.tabbarManager.getTabContainer(parentTabId).removeTab(tabId,true);
			break;
		case 2://=2时，关闭并切换到最后打开的id,如最后的id已关闭，则相当于1
			if (Milan.tabbarManager.existTab(Milan.tabbarManager.tabbars[parentTabId].latestTabId,parentTabId))
			{
				Milan.tabbarManager.getTabContainer(parentTabId).removeTab(tabId,false);
				Milan.tabbarManager.activateTab(Milan.tabbarManager.tabbars[parentTabId].latestTabId,parentTabId);
			}
			else
			{
				Milan.tabbarManager.getTabContainer(parentTabId).removeTab(tabId,true);
			}
			break;
		default:
			Milan.tabbarManager.getTabContainer(parentTabId).removeTab(tabId,true);
	}
};
/**
 * 关闭所有tabbar
 */
Milan.tabbarManager.removeAllTab = function(parentTabId)
{
	parentTabId = parentTabId||Milan.tabbarManager.mainTabbarId;
	Milan.tabbarManager.getTabContainer(parentTabId).clearAll();
};
/**
 * 删除当前tabbar
 */
Milan.tabbarManager.removeCurrentTab = function(switchMode,parentTabId)
{
	parentTabId = parentTabId||Milan.tabbarManager.mainTabbarId;
	if(parentTabId==Milan.tabbarManager.mainTabbarId){
		if("mainTabPanel"!=Milan.tabbarManager.getActiveTab(parentTabId))	//如果当前tab是“我的桌面”，就不移除
		{
			Milan.tabbarManager.removeTab(Milan.tabbarManager.getActiveTab(parentTabId),switchMode,parentTabId);		
		}
	}else{
		Milan.tabbarManager.removeTab(Milan.tabbarManager.getActiveTab(parentTabId),switchMode,parentTabId);
	}
}
/**
 * 根据请求创建一个新的tab页 <br>
 * 注意:该方法在遇到已经存在相同tabTitle的时候，则用新的ajax请求返回的内容<br>
 *     填充该tab页，若没有找到相同tabTitle的tab页则会新建一个tab页。<br>
 * {"onUpdated":updatedCallBack}
 */
Milan.tabbarManager.linkclick = function(tabTitle,url,config,parentTabId)
{
	var tabId = Milan.tabbarManager.generateTabId(tabTitle);
	config=config||{};
	parentTabId = parentTabId||Milan.tabbarManager.mainTabbarId;
	if(Milan.tabbarManager.existTab(tabId,parentTabId))
	{
		Milan.ajaxutility.updateContentUseAjax("post",url,tabId,config);
		Milan.tabbarManager.activateTab(tabId,parentTabId);
		return;
	}
};

/**
 *  判断是否存在两个互斥的tab标签
 */
Milan.tabbarManager.mutex=function(tabId,mutex1,mutex2){
	var tabs = Milan.tabbarManager.getAllTabs();
	for(var i=0,ilen=tabs.length;i<ilen;i++)
	{
		if (tabId==mutex1&&tabs[i].getAttribute("tab_id") == mutex2)
		{
			return mutex2;
		}
		if (tabId==mutex2&&tabs[i].getAttribute("tab_id") == mutex1)
		{
			return mutex1;
		}
	}
	return null;
};
/**
 * 根据父标签名，子标签名，和子url打开子标签
 */
Milan.tabbarManager.openSubTabsByURL=function(parentTitle,subTitle,url,config){
	var subTabs = Milan.tabbarManager.menuCache[parentTitle];
	if(!subTabs)return;
	var arr = [];
	for(var i =0,ilen = subTabs.length;i<ilen;i++){
		if(subTabs[i].tabTitle == subTitle && url){
			arr[i]={tabTitle:subTabs[i].tabTitle,url:url,clickUrl:subTabs[i].url,config:config};
		}else{
			arr[i]={tabTitle:subTabs[i].tabTitle,url:subTabs[i].url,clickUrl:null};
		}
	}
	Milan.tabbarManager.openMultiSubTabs(parentTitle,arr,subTitle);
}
/**
 * 打开多个tab，如： <a href="#" onclick="Milan.tabbarManager.openMultiTabs(new Array({tabTitle:'提醒的事务',url:'archiveAction.do?actionType=23'},{tabTitle:'已办事务',url:'archiveAction.do?actionType=24'}),'已办事务')">ddfdsafdsa</a>
 */
Milan.tabbarManager.openMultiSubTabs=function(parentTitle,subTabs,activeSubTitle){
	if(!subTabs||subTabs.length==0)
	{
		subTabs = Milan.tabbarManager.getSubMenusFromMenuCache(parentTitle);
		if(!subTabs||subTabs.length==0) return;
	}
	activeSubTitle =activeSubTitle||subTabs[0].tabTitle;
	var tabId = Milan.tabbarManager.generateTabId(parentTitle);
	var subTabId="";
	if(Milan.tabbarManager.existTab(tabId)){
		Milan.tabbarManager.activateTab(tabId);
		if(Milan.tabbarManager.existTab(Milan.tabbarManager.generateTabId(activeSubTitle),tabId)){
			Milan.tabbarManager.activateTab(Milan.tabbarManager.generateTabId(activeSubTitle),tabId);
			for(var i=0;i<subTabs.length;i++){	//刷新
				if(activeSubTitle==subTabs[i].tabTitle){
					subTabId=Milan.tabbarManager.generateTabId(subTabs[i].tabTitle);
					Milan.ajaxutility.updateContentUseAjax("POST",subTabs[i].url,subTabId,subTabs[i].config);
					break;
				}
			}
		}else{
			if(!Milan.tabbarManager.getTabContainer(tabId))
				Milan.tabbarManager.createSubTab(tabId,subTabs,activeSubTitle);
		}
		return;
	}
	Milan.tabbarManager.addTab(tabId,parentTitle);
	Milan.tabbarManager.createSubTab(tabId,subTabs,activeSubTitle);
};
/**
 * 创建子标签
 */
Milan.tabbarManager.createSubTab=function(tabId,subTabs,activeSubTitle){
	var subTabId="",hasSubActive=false;
	var tabb=Milan.tabbarManager.getMainTabContainer().cells(tabId).attachTabbar();	
	tabb._s.line_height = 27;		//设置tab高度
	tabb._setSizes();
	tabb._s._tabSize = "auto";			//设置tab宽度
	Milan.tabbarManager.tabbars[tabId]=tabb;
	Milan.tabbarManager.activateTab(tabId);	
	tabb.attachEvent("onSelect",Milan.tabbarManager._onSelectHander.bind(tabId));
	tabb.attachEvent("onTabActive",Milan.tabbarManager._onTabActiveHander);
	tabb.attachEvent("onTabClick",Milan.tabbarManager._onTabClickHander);	
	tabb.setSkin('dhx_blue');
	tabb.enableForceHiding(true);
	tabb.setImagePath(Milan.skinType + "images/dhtmlx/");
	tabb.enableAutoReSize(true);
	//tabb.contentPadding = "0px 8px 0px 8px";
	for(var i=0;i<subTabs.length;i++){
		subTabId=Milan.tabbarManager.generateTabId(subTabs[i].tabTitle);
		if (!Milan.tabbarManager.existTab(subTabId,tabId))
		{
			var _tab = tabb.addTab(subTabId, subTabs[i].tabTitle);
			_tab.tabDef = subTabs[i];
			_tab.tabDef.parentTabId = tabId;
		}
		if(activeSubTitle==subTabs[i].tabTitle){
			hasSubActive = true;
			Milan.ajaxutility.updateContentUseAjax("POST",subTabs[i].url,subTabId,subTabs[i].config);
		}
		/*(function(tabId1,tab,parentTabId){
			Milan.tabbarManager.getTabContainer(parentTabId).getTab(tabId1).onclick=function(e){
				if(Milan.tabbarManager.getActiveTab(parentTabId)&&Milan.tabbarManager.getActiveTab(parentTabId).indexOf(tabId1) == -1 
					&& Milan.tabbarManager.getTabContainer(parentTabId).getTab(tabId1).isClicked){
					
					//如果从其他标签也激活当前标签，则需要判断此标签是否已被点击过
					setTimeout(function(){//此方法是为了修改grid的宽高！当显示器resize后，才会需要调用此方法
						Milan.tabbarManager.refreshActiveTab();
						for(var i = Milan.ajaxutility.grids.length - 1; i>=0; i--) {
						//当前激活状态的grid才修改宽高
							Milan.ajaxutility.grids[i].setSizes();
						if(Milan.ajaxutility.grids[i].entBox.clientWidth!=0){
							Milan.pagejs.page_index.resizeGrid(Milan.ajaxutility.grids[i],Milan.ajaxutility.grids[i].resizeStep);
							Milan.ajaxutility.grids[i].resizeStep = 0;
						}
					},350);
					return;
				}
				var beforeClickFun = Milan.tabbarManager.getTabContainer(parentTabId).getTab(tabId1).beforeClickFun;
				if(!beforeClickFun || beforeClickFun()){
					if(tab.clickUrl){
						Milan.tabbarManager.linkclick(tab.tabTitle,tab.clickUrl,tab.config,parentTabId);
					}else{
						Milan.tabbarManager.linkclick(tab.tabTitle,tab.url,tab.config,parentTabId);
					}
				}
				Milan.tabbarManager.getTabContainer(parentTabId).getTab(tabId1).isClicked = true;
			}
		})(subTabId,subTabs[i],tabId);*/
	}
	if(hasSubActive){
		Milan.tabbarManager.activateTab(Milan.tabbarManager.generateTabId(activeSubTitle),tabId);
	}
	if(!hasSubActive){//如果activeSubTitle所属的标签不存在，则激活第一个标签
		subTabId=Milan.tabbarManager.generateTabId(subTabs[0].tabTitle);
		Milan.ajaxutility.updateContentUseAjax("POST",subTabs[0].url,subTabId,subTabs[0].config);
		Milan.tabbarManager.getTabContainer(tabId).getTab(subTabId).isClicked = true;
		Milan.tabbarManager.activateTab(subTabId,tabId);
	}else{
		//标记当前二级标签已被click一次
		Milan.tabbarManager.getTabContainer(tabId).getTab(Milan.tabbarManager.generateTabId(activeSubTitle)).isClicked = true;
	}
	//清楚当前一级标签的click事件
	Milan.tabbarManager.getTabContainer().getTab(tabId).onclick=null;
};

Milan.tabbarManager._onTabActiveHander = function(tabId,lastTabId)
{
	Milan.tabbarManager.reRenderActiveTab();
}

Milan.tabbarManager._onTabClickHander = function(tabId,tabDOMObj)
{

	var beforeClickFun = tabDOMObj.beforeClickFun;
	var tabDef = tabDOMObj.tabDef;
	var m = Milan.tabbarManager.getTabContainer(tabDef.parentTabId);

	if (m._lastActive.getAttribute("tab_id")==tabId || !tabDOMObj.isClicked)
	{
		if(!beforeClickFun || beforeClickFun()){
			if(tabDef.clickUrl){
				Milan.tabbarManager.linkclick(tabDef.tabTitle,tabDef.clickUrl,tabDef.config,tabDef.parentTabId);
			}else{
				Milan.tabbarManager.linkclick(tabDef.tabTitle,tabDef.url,tabDef.config,tabDef.parentTabId);
			}
		}
		else
		{
			Milan.tabbarManager.reRenderActiveTab();	//如果未刷新tab,刷需要考虑重渲染当前tab的内容
		}
		tabDOMObj.isClicked = true;
	}
}

Milan.tabbarManager.reRenderActiveTab=function()
{
	var tabObj = Milan.tabbarManager.getActiveTabObj();
	var gridDoms = tabObj.find(".gridbox");
	var activeGrid = Milan.ajaxutility.getGridFromCache(gridDoms.attr("gridObjId"));
	if (activeGrid)
	{	
		if (!activeGrid.needResize) return ;	//如果当前grid不需要重刷，则放弃
		if (activeGrid.setSizes())				//如果grid setsize失败，则可能是因为grid是被隐藏的，那么此时就不再进行下面的步骤了
			activeGrid.needResize = false;
		else
			return;
		var osh = 0,sch = 0,gridWidth = 0 ,form = jQuery(activeGrid.objBox).parents("form"),ortherHeight = 0;
		//计算grid中操作按钮的位置
		gridWidth =  activeGrid.objBox.clientWidth-11-8;	//-11的原因是td_affair的样式有个padding-left=11,不减11会超。再减8是不让btn区顶到最右边
		var btnZones  = tabObj.find(".td_affair .td_info2 .info_btn");
		if (btnZones.length>0)
		{
			var btnZone = btnZones[0];
			btnZone.style.display="";
			var info_btn_Width = btnZone.clientWidth;
			tabObj.find(".td_affair .td_info2").each(
					function(f,info2)
					{
						jQuery(info2).find(".info_btn").show();
						jQuery(info2).css({"width":gridWidth}).find(".info_startRemark").css({"width": gridWidth-info_btn_Width-48});	//减48是给remark区和btn区留出间距
						jQuery(info2).find(".info_btn").hide();
					}	
				)			
		}
		
		//----------------------------
		//重置grid内容区的高度
		osh = jQuery(activeGrid.objBox).prop("offsetHeight");
		sch = jQuery(activeGrid.objBox).prop("scrollHeight");
		if(osh < sch){
			activeGrid.enableAutoHeight(true,jQuery(activeGrid.entBox).height() - Milan.resizeHeight,true);
		}
		if(form && form.height()!=0 ){
			ortherHeight = parseInt(form.parent().parent().parent().css("height"));
			if(Milan.resizeHeight!=0)ortherHeight=ortherHeight - 30;
			if(ortherHeight  <  form.height()){
				var step = form.height() - ortherHeight;
				activeGrid.enableAutoHeight(true,jQuery(activeGrid.entBox).height() - step,true);
			}
		}	
	}
};
/**
 * 更新tabbar内容
 */
Milan.tabbarManager.updateTab = function(tabId,content,parentTabId)
{
	if(!parentTabId){
		var activeTabId =Milan.tabbarManager.getActiveTab();
		if(Milan.tabbarManager.existTab(tabId,activeTabId)){
			return Milan.tabbarManager.getTabContainer(activeTabId).setContentHTML(tabId, content);
		}
		for(var k in Milan.tabbarManager.tabbars){
			if(Milan.tabbarManager.existTab(tabId,k)){
				return Milan.tabbarManager.getTabContainer(k).setContentHTML(tabId, content);
			}
		}
	}else{
		return Milan.tabbarManager.getTabContainer(parentTabId).setContentHTML(tabId, content);
	}
};
/**
 * 刷新某个Tab页的内容，根据请求创建一个新的tab页 <br>
 * 注意:该方法会根据tabTitle查找是否存在此Tab页，如果存在，则刷新内容并激活此Tab，<br>
 *     如果没有找到对应的Tab，不新建，也不做任何刷新动作。<br>
 * 
 */
Milan.tabbarManager.refreshTabPage = function(tabTitle,url,parentTabId)
{
	parentTabId = parentTabId||Milan.tabbarManager.mainTabbarId;
    var tabs = Milan.tabbarManager.getAllTabs();
	var tabId=Milan.tabbarManager.generateTabId(tabTitle);
	for(var i=0,ilen=tabs.length;i<ilen;i++)
	{
		if (tabs[i].getAttribute("tab_id") == tabId) 
		{
			if(parentTabId!=Milan.tabbarManager.mainTabbarId){
				Milan.tabbarManager.activateTab(parentTabId);
			}
			Milan.tabbarManager.activateTab(tabId,parentTabId);
			Milan.ajaxutility.updateContentUseAjax("POST",url,tabId);
			return;
		}
	}
};
/**
 * 创建我的桌面
 */
Milan.tabbarManager.buildDesktop = function(tabberType)
{
	var _userId = tabberType;
	if (!tabberType)
		_userId = Milan.currentUserId;
	if (_userId && _userId>0) //目前小于0的是useradmin(-100)和checkadmin(-101)，所以大于0的都是普通用户
	{
		Milan.tabbarManager.getMainTabContainer().attachEvent("onTabAdded",Milan.tabbarManager.resetMorePosition);
		//Milan.tabbarManager.addTab("mainTabPanel","我的桌面",Milan.tabbarManager.mainTabbarId,98,"home_ico");
		if(Milan.fixedMenu){//创建固定标签
			var menuId = "",menuArr = null,activeSubTitle="";
			for(var menuTitle in Milan.fixedMenu){
				if(Milan.fixedMenu.hasOwnProperty(menuTitle) && menuTitle.indexOf("_activesub")==-1){
					menuId = Milan.tabbarManager.generateTabId(menuTitle);
					menuArr=Milan.fixedMenu[menuTitle];
					activeSubTitle = Milan.fixedMenu[menuTitle+"_activesub"];
					Milan.tabbarManager.addTab(menuId,menuTitle);
					Milan.tabbarManager.unCloseTabIds = Milan.tabbarManager.unCloseTabIds + menuId + ",";
					(function(id,title,arr,active){
						Milan.tabbarManager.getTabContainer().getTab(id).onclick=function(){
							Milan.tabbarManager.openMultiSubTabs(title,arr,active);
							Milan.tabbarManager.getTabContainer().getTab(id).onclick=null;
						};
					})(menuId,menuTitle,menuArr,activeSubTitle);
				}
			}
		}
		Milan.tabbarManager.getMainTabContainer().enableTabCloseButton(true);
		//Milan.tabbarManager.getMainTabContainer().setContentHTML("mainTabPanel","<div id='portal_container'></div>");		
		Milan.tabbarManager.getMainTabContainer().attachEvent("onSelect",Milan.tabbarManager._onSelectHander.bind(Milan.tabbarManager.mainTabbarId));
		Milan.tabbarManager.getMainTabContainer().attachEvent("onTabRemoved",Milan.tabbarManager._onCloseHander);
		//Milan.tabbarManager.activateTab("mainTabPanel");
		//构造tabber区里的portlet
		//com.milan.portlet.MainFr.init("dev.jsp");
	}
	else
	{
		Milan.tabbarManager.getMainTabContainer().attachEvent("onTabAdded",Milan.tabbarManager.resetMorePosition);
//		Milan.tabbarManager.addTab("mainTabPanel","后台管理",Milan.tabbarManager.mainTabbarId,98,"home_ico");
		if(Milan.fixedMenu){//创建固定标签
			var menuId = "",menuArr = null,activeSubTitle="",firstActiveTab = "";
			for(var menuTitle in Milan.fixedMenu){
				if(Milan.fixedMenu.hasOwnProperty(menuTitle) && menuTitle.indexOf("_activesub")==-1){
					menuId = Milan.tabbarManager.generateTabId(menuTitle);
					menuArr=Milan.fixedMenu[menuTitle];
					activeSubTitle = Milan.fixedMenu[menuTitle+"_activesub"];
					Milan.tabbarManager.addTab(menuId,menuTitle);
					Milan.tabbarManager.unCloseTabIds = Milan.tabbarManager.unCloseTabIds + menuId + ",";
					if(firstActiveTab==""){
						Milan.tabbarManager.openMultiSubTabs(menuTitle,menuArr,activeSubTitle);
						firstActiveTab = menuId;
					}else{
						(function(id,title,arr,active){
							Milan.tabbarManager.getTabContainer().getTab(id).onclick=function(){
								Milan.tabbarManager.openMultiSubTabs(title,arr,active);
								Milan.tabbarManager.getTabContainer().getTab(id).onclick=null;
							};
						})(menuId,menuTitle,menuArr,activeSubTitle);
					}
				}
			}
		}
//		Milan.tabbarManager.getMainTabContainer().setContentHTML("mainTabPanel","<div style='width: 100%;height: 100%; background:url("+Milan.skinType+"/images/securitysetup.jpg) center no-repeat'></div>");
//		Milan.tabbarManager.activateTab("mainTabPanel");
		Milan.tabbarManager.getMainTabContainer().enableTabCloseButton(true);
		Milan.tabbarManager.getMainTabContainer().attachEvent("onTabRemoved",Milan.tabbarManager._onCloseHander);
	}
};


Milan.tabbarManager.generateTabId = function(tabTitle)
{
	if (!tabTitle) return null;
	if (tabTitle==Milan.tabbarManager.mainTabbarId || tabTitle=="mainTabPanel") return tabTitle;
	if (tabTitle.indexOf(Milan.tabbarManager._HEAD_FIX)>=0) return tabTitle;
	return Milan.tabbarManager._HEAD_FIX+tabTitle;
};

/*
* 去掉tab内容区中的paddingLeft和paddingRight,并将减掉的宽度加到width中去
* 如果不给参数，则默认为去掉当前激活的tab中的padding
*/
Milan.tabbarManager.removeTabPadding = function(tabId,parentTabId)
{
	var tabObj ;
	if (!tabId)
		tabObj = Milan.tabbarManager.getActiveTabObj();
	else
	{
		tabObj = Milan.tabbarManager.existTab(tabId,parentTabId);
		tabObj = jQuery(tabObj).find("div[ida='dhxMainCont']");
	}
	if (tabObj)
	{
		var pLeft = parseInt(tabObj.css("paddingLeft"));
		var pRight =parseInt(tabObj.css("paddingRight"));
  	//tabObj.css({"paddingLeft":"0","paddingRight":"0","width":tabObj.width()+pLeft+pRight});
		tabObj.css({"paddingLeft":"0","paddingRight":"0"}); 
	}
}
/*
* 给tab内容区加paddingLeft和paddingRight,并减掉的宽度
* 如果不给参数，则默认为增加当前激活的tab中的padding
*/
Milan.tabbarManager.addTabPadding = function(pLeft,pRight,tabId,parentTabId)
{
//	var tabObj ;
//	if (!tabId)
//		tabObj = Milan.tabbarManager.getActiveTabObj();
//	else
//	{
//		tabObj = Milan.tabbarManager.existTab(tabId,parentTabId);
//		tabObj = jQuery(tabObj).find("div[ida='dhxMainCont']");
//	}
//	if (tabObj)
//	{
//		var pL = parseInt(tabObj.css("paddingLeft"));
//		var pR =parseInt(tabObj.css("paddingRight"));
//		var width = tabObj.width();
//		if(pL!=pLeft){
//			width -=pLeft;
//		}
//		if(pR!=pRight){
//			width -=pRight;
//		}
//	  	//tabObj.css({"paddingLeft":pLeft+"px","paddingRight":pRight+"px","width":width}); 
//		tabObj.css({"paddingLeft":pLeft+"px","paddingRight":pRight+"px"}); 
//	}
}

Milan.tabbarManager.getFormInActiveTab = function(notJQuery)
{
	var tab = Milan.tabbarManager.getActiveTabObj();
	var forms = tab.find("form");
	return !notJQuery?forms:forms.get();
};

//返回当前激活的tab，且用jQuery包装
Milan.tabbarManager.getActiveTabObj = function()
{
	var pTabId = Milan.tabbarManager.getActiveTab();
	var subTabId = Milan.tabbarManager.getActiveTab(pTabId);
	var tab = Milan.tabbarManager.getTabContainer(pTabId);
	if (!tab) 
		tab = Milan.tabbarManager.getMainTabContainer();
	return jQuery(tab.cells(subTabId)).find("div[ida='dhxMainCont']");
};




//传入一个formid，返回该form所在的tabObj,jQuery封装
Milan.tabbarManager.getTabObjOfForm = function(formId)
{
	var form = formId;
	if (typeof(formId)!="object")
		form = jQuery("#"+formId);
	return form.parents("div[ida='dhxMainCont']").first();	
}


Milan.tabbarManager.getFirstFormInActiveTab = function(notJQuery)
{
	var forms = Milan.tabbarManager.getFormInActiveTab(notJQuery);
	if (forms && forms.length>0)
		return !notJQuery?jQuery(forms[0]):forms[0];
}

Milan.tabbarManager.getPointInActiveTab = function(id)
{
		var obj;
		if (typeof(id)=="object")
			obj = id;
		else
		{
			var form = Milan.tabbarManager.getFirstFormInActiveTab();
			obj = form.find("#"+id).get();
			if (obj.length==0) return ;
				obj = obj[0];
		}
		
	  var   x   =   obj.offsetLeft,   y   =   obj.offsetTop;       

    while(obj=obj.offsetParent) 
    { 
    	if (obj.getAttribute("ida")=="dhxMainCont") break;	    
       x   +=   obj.offsetLeft;   
       y   +=   obj.offsetTop; 
    } 
    return {"x":x,"y":y}   ;
}

$form = Milan.tabbarManager.getFirstFormInActiveTab;
$forms = Milan.tabbarManager.getFormInActiveTab; 

Milan.tabbarManager._onSelectHander = function(tabId)
{
	try
	{
		var tab = Milan.tabbarManager.getMainTabContainer().getTab(tabId);	
		if (tab) //如果是主Tabbar的，用于一级tabbar切换
		{
				var pTab = Milan.tabbarManager.getTabContainer(tabId);
				if (!pTab)	//没有pTab说明是一级tabber但没有二级tabber
				{
					Milan.history.recordHistory(tab.getAttribute("tab_title"));
					return true;
				}
				var subTab = pTab.getTab(pTab.getActiveTab());
				if (subTab)
					Milan.history.recordHistory(tab.getAttribute("tab_title"),subTab.getAttribute("tab_title"));
		}
		else
		{
				var pTab = Milan.tabbarManager.getTabContainer(this);
				tab = Milan.tabbarManager.getMainTabContainer().getTab(this);
				var subTab = pTab.getTab(tabId);
				if (subTab)
					Milan.history.recordHistory(tab.getAttribute("tab_title"),subTab.getAttribute("tab_title"));
		}
	}
	finally
	{
		return true;
	}
};
//重置更多菜单位置
Milan.tabbarManager.resetMorePosition=function(){
	var lastTab = Milan.tabbarManager.getMainTabContainer().getLastTab();
	var left = lastTab.offsetWidth+lastTab.offsetLeft;
	if(lastTab.parentNode&&lastTab.parentNode.parentNode){
		if(parseInt(lastTab.parentNode.parentNode.style.paddingLeft)){
			left = left+parseInt(lastTab.parentNode.parentNode.style.paddingLeft);
		}
		if(parseInt(lastTab.parentNode.parentNode.offsetLeft)){
			left = left+parseInt(lastTab.parentNode.parentNode.offsetLeft);
		}
	}
	jQuery('#main_menu').css({"left":left});
};
//触发当前标签页的click事件 
Milan.tabbarManager.fireTabClickEvent = function(){
	var activeTab = Milan.tabbarManager.getTabContainer().getTab(Milan.tabbarManager.getActiveTab());
	if(activeTab){
		if(activeTab.onclick)activeTab.onclick();
	}
};
Milan.tabbarManager._onCloseHander = function(tabId)
{
	try
	{
		Milan.tabbarManager.resetMorePosition();
		if (Milan.tabbarManager.getTabContainer(tabId))
			delete Milan.tabbarManager.tabbars[tabId];
		Milan.tabbarManager.fireTabClickEvent();
	}
	finally
	{	
		return true;
	}
};
Milan.tabbarManager.goBack=function(url){
	var pId = Milan.tabbarManager.getActiveTab();
	if(pId=="mainTabPanel"){
		return;
	}
	var subId  =  Milan.tabbarManager.getActiveTab(pId);
	if(!url){
		Milan.tabbarManager.getTabContainer(pId).getTab(subId).onclick();
	}else{
		if(pId.indexOf(Milan.tabbarManager._HEAD_FIX)>-1){
			pId = pId.substring(pId.indexOf(Milan.tabbarManager._HEAD_FIX)+Milan.tabbarManager._HEAD_FIX.length);
		}
		if(subId.indexOf(Milan.tabbarManager._HEAD_FIX)>-1){
			subId = subId.substring(subId.indexOf(Milan.tabbarManager._HEAD_FIX)+Milan.tabbarManager._HEAD_FIX.length);
		}
		Milan.tabbarManager.addTabPadding(8,8);
		Milan.tabbarManager.openSubTabsByURL(pId,subId,url);
	}
};
Milan.tabbarManager.refleshCurrentTab = function(){
	var pId = Milan.tabbarManager.getActiveTab();
	if(pId=="mainTabPanel"){
		return;
	}
	var subId  =  Milan.tabbarManager.getActiveTab(pId);
	if(pId.indexOf(Milan.tabbarManager._HEAD_FIX)>-1){
		pId = pId.substring(pId.indexOf(Milan.tabbarManager._HEAD_FIX)+Milan.tabbarManager._HEAD_FIX.length);
	}
	if(subId.indexOf(Milan.tabbarManager._HEAD_FIX)>-1){
		subId = subId.substring(subId.indexOf(Milan.tabbarManager._HEAD_FIX)+Milan.tabbarManager._HEAD_FIX.length);
	}
	Milan.tabbarManager.openSubTabsByURL(pId,subId);
};
Milan.tabbarManager.setReflesh = function(tabTitle,reflesh){
	var tab = Milan.tabbarManager.getTabByTitle(tabTitle);
	if(!tab)return;
	if(jQuery.isFunction(reflesh)){
		tab.beforeClickFun = reflesh;
	}else{
		tab.isClicked = false;
		tab.beforeClickFun = function(){return reflesh};
	}
};
Milan.tabbarManager.bindEventForTab = function(pTitle,sTitle){
	var tab = Milan.tabbarManager.getTabByTitle(pTitle);
	if(!tab)return;
	var activeTabId = Milan.tabbarManager.getActiveTab(pTitle);
	if(activeTabId && activeTabId.indexOf(sTitle) > -1){
		tab.onclick = function(){
			Milan.tabbarManager.openSubTabsByURL(pTitle,sTitle);
			tab.onclick = null;
		};
	}else{
		Milan.tabbarManager.setReflesh(sTitle,true);
	}
};